import { config } from '../config'

/**
 * 获取完整的图片URL
 * @param {string} imageUrl - 图片URL（可能是相对路径或绝对路径）
 * @returns {string} 完整的图片URL
 */
export function getFullImageUrl(imageUrl) {
  if (!imageUrl) {
    return config.images.placeholder || ''
  }

  // 如果已经是完整的URL（包含协议），直接返回
  if (imageUrl.startsWith('http://') || imageUrl.startsWith('https://')) {
    return imageUrl
  }

  // 如果是相对路径，拼接baseURL
  if (imageUrl.startsWith('/')) {
    return `${config.images.baseURL}${imageUrl}`
  }

  // 如果不是以/开头，但也不是完整URL，则拼接baseURL和/
  return `${config.images.baseURL}/${imageUrl}`
}

/**
 * 验证图片URL是否有效
 * @param {string} imageUrl - 图片URL
 * @returns {Promise<boolean>} 是否有效
 */
export function validateImageUrl(imageUrl) {
  return new Promise(resolve => {
    if (!imageUrl) {
      resolve(false)
      return
    }

    const img = new Image()
    const timeout = setTimeout(() => {
      img.src = ''
      resolve(false)
    }, config.images.timeout)

    img.onload = () => {
      clearTimeout(timeout)
      resolve(true)
    }

    img.onerror = () => {
      clearTimeout(timeout)
      resolve(false)
    }

    img.src = getFullImageUrl(imageUrl)
  })
}

/**
 * 获取图片的占位符URL
 * @returns {string} 占位符URL
 */
export function getPlaceholderUrl() {
  return config.images.placeholder || ''
}

/**
 * 处理图片加载错误
 * @param {Event} event - 图片加载错误事件
 * @param {string} fallbackUrl - 备用图片URL
 */
export function handleImageError(event, fallbackUrl = null) {
  console.warn('图片加载失败:', event.target.src)

  const placeholderUrl = fallbackUrl || getPlaceholderUrl()
  if (placeholderUrl) {
    event.target.src = placeholderUrl
  } else {
    // 隐藏图片，显示占位符
    event.target.style.display = 'none'
    const placeholder = event.target.parentElement?.querySelector('.image-placeholder')
    if (placeholder) {
      placeholder.style.display = 'flex'
    }
  }
}
